<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Struct flatten</title>
<link rel="stylesheet" href="../../../../../doc/src/boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="../../../index.html" title="The Boost C++ Libraries BoostBook Documentation Subset">
<link rel="up" href="../../../proto/reference.html#header.boost.proto.fusion_hpp" title="Header &lt;boost/proto/fusion.hpp&gt;">
<link rel="prev" href="second/resu_1_3_32_5_27_2_1_1_3_6.html" title="Struct template result&lt;This(Pair const &amp;)&gt;">
<link rel="next" href="flatten/resu_1_3_32_5_28_2_1_1_1_4.html" title="Struct template result&lt;This(Expr)&gt;">
<meta name="viewport" content="width=device-width, initial-scale=1">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr>
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
<td align="center"><a href="../../../../../index.html">Home</a></td>
<td align="center"><a href="../../../../../libs/libraries.htm">Libraries</a></td>
<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
<td align="center"><a href="../../../../../more/index.htm">More</a></td>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="second/resu_1_3_32_5_27_2_1_1_3_6.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../../proto/reference.html#header.boost.proto.fusion_hpp"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="flatten/resu_1_3_32_5_28_2_1_1_1_4.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
<div class="refentry">
<a name="boost.proto.functional.flatten"></a><div class="titlepage"></div>
<div class="refnamediv">
<h2><span class="refentrytitle">Struct flatten</span></h2>
<p>boost::proto::functional::flatten — A <a class="link" href="../../../PolymorphicFunctionObject.html" title="Concept PolymorphicFunctionObject">PolymorphicFunctionObject</a> type that returns a "flattened"
            view of a Proto expression tree. </p>
</div>
<h2 class="refsynopsisdiv-title">Synopsis</h2>
<div class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: &lt;<a class="link" href="../../../proto/reference.html#header.boost.proto.fusion_hpp" title="Header &lt;boost/proto/fusion.hpp&gt;">boost/proto/fusion.hpp</a>&gt;

</span>
<span class="keyword">struct</span> <a class="link" href="flatten.html" title="Struct flatten">flatten</a> <span class="special">:</span> <span class="keyword"></span> <a class="link" href="../callable.html" title="Struct callable">proto::callable</a> <span class="special">{</span>
  <span class="comment">// member classes/structs/unions</span>
  <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> This<span class="special">,</span> <span class="keyword">typename</span> <a class="link" href="../../../Expr.html" title="Concept Expr">Expr</a><span class="special">&gt;</span> 
  <span class="keyword">struct</span> <a class="link" href="flatten/resu_1_3_32_5_28_2_1_1_1_4.html" title="Struct template result&lt;This(Expr)&gt;">result</a><span class="special">&lt;</span><span class="identifier">This</span><span class="special">(</span><span class="identifier">Expr</span><span class="special">)</span><span class="special">&gt;</span> <span class="special">:</span> <span class="keyword"></span> result&lt; This(Expr const &amp;) &gt; <span class="special">{</span>
  <span class="special">}</span><span class="special">;</span>
  <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> This<span class="special">,</span> <span class="keyword">typename</span> <a class="link" href="../../../Expr.html" title="Concept Expr">Expr</a><span class="special">&gt;</span> 
  <span class="keyword">struct</span> <a class="link" href="flatten/resu_1_3_32_5_28_2_1_1_1_5.html" title="Struct template result&lt;This(Expr &amp;)&gt;">result</a><span class="special">&lt;</span><span class="identifier">This</span><span class="special">(</span><span class="identifier">Expr</span> <span class="special">&amp;</span><span class="special">)</span><span class="special">&gt;</span> <span class="special">:</span> <span class="keyword"></span> <a class="link" href="../result_of/flatten.html" title="Struct template flatten">proto::result_of::flatten</a>&lt; Expr &gt; <span class="special">{</span>
  <span class="special">}</span><span class="special">;</span>

  <span class="comment">// <a class="link" href="flatten.html#id-1_3_32_5_28_2_1_1_1_6-bb">public member functions</a></span>
  <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <a class="link" href="../../../Expr.html" title="Concept Expr">Expr</a><span class="special">&gt;</span> 
    <span class="keyword">typename</span> <a class="link" href="../result_of/flatten.html" title="Struct template flatten">proto::result_of::flatten</a><span class="special">&lt;</span> <span class="identifier">Expr</span> <span class="special">&gt;</span><span class="special">::</span><span class="identifier">type</span> <span class="keyword">const</span> 
    <a class="link" href="flatten.html#id-1_3_32_5_28_2_1_1_1_6_1-bb"><span class="keyword">operator</span><span class="special">(</span><span class="special">)</span></a><span class="special">(</span><span class="identifier">Expr</span> <span class="special">&amp;</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span>
  <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <a class="link" href="../../../Expr.html" title="Concept Expr">Expr</a><span class="special">&gt;</span> 
    <span class="keyword">typename</span> <a class="link" href="../result_of/flatten.html" title="Struct template flatten">proto::result_of::flatten</a><span class="special">&lt;</span> <span class="identifier">Expr</span> <span class="keyword">const</span> <span class="special">&gt;</span><span class="special">::</span><span class="identifier">type</span> <span class="keyword">const</span> 
    <a class="link" href="flatten.html#id-1_3_32_5_28_2_1_1_1_6_2-bb"><span class="keyword">operator</span><span class="special">(</span><span class="special">)</span></a><span class="special">(</span><span class="identifier">Expr</span> <span class="keyword">const</span> <span class="special">&amp;</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span>
<span class="special">}</span><span class="special">;</span></pre></div>
<div class="refsect1">
<a name="id-1.3.32.5.30.4.4"></a><h2>Description</h2>
<p>
              A <a class="link" href="../../../PolymorphicFunctionObject.html" title="Concept PolymorphicFunctionObject">PolymorphicFunctionObject</a> type that returns a "flattened" view
              of a Proto expression tree. For a tree with a top-most node tag of type
              <code class="computeroutput">T</code>, the elements of the flattened sequence are determined by
              recursing into each child node with the same tag type and returning those nodes of different
              type. So for instance, the Proto expression tree corresponding to the expression
              <code class="computeroutput">a | b | c</code> has a flattened view with elements [a, b, c], even
              though the tree is grouped as <code class="computeroutput">((a | b) | c)</code>.
            </p>
<p>
              The resulting view is a Fusion Forward Sequence.
            </p>
<div class="refsect2">
<a name="id-1.3.32.5.30.4.4.4"></a><h3>
<a name="id-1_3_32_5_28_2_1_1_1_6-bb"></a><code class="computeroutput">flatten</code> public member functions</h3>
<div class="orderedlist"><ol class="orderedlist" type="1">
<li class="listitem">
<pre class="literallayout"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <a class="link" href="../../../Expr.html" title="Concept Expr">Expr</a><span class="special">&gt;</span> 
  <span class="keyword">typename</span> <a class="link" href="../result_of/flatten.html" title="Struct template flatten">proto::result_of::flatten</a><span class="special">&lt;</span> <span class="identifier">Expr</span> <span class="special">&gt;</span><span class="special">::</span><span class="identifier">type</span> <span class="keyword">const</span> 
  <a name="id-1_3_32_5_28_2_1_1_1_6_1-bb"></a><span class="keyword">operator</span><span class="special">(</span><span class="special">)</span><span class="special">(</span><span class="identifier">Expr</span> <span class="special">&amp;</span> expr<span class="special">)</span> <span class="keyword">const</span><span class="special">;</span></pre>
<p>
                  Returns a Fusion Forward Sequence representing a flattened view of <code class="computeroutput">expr</code>.
                </p>
</li>
<li class="listitem">
<pre class="literallayout"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <a class="link" href="../../../Expr.html" title="Concept Expr">Expr</a><span class="special">&gt;</span> 
  <span class="keyword">typename</span> <a class="link" href="../result_of/flatten.html" title="Struct template flatten">proto::result_of::flatten</a><span class="special">&lt;</span> <span class="identifier">Expr</span> <span class="keyword">const</span> <span class="special">&gt;</span><span class="special">::</span><span class="identifier">type</span> <span class="keyword">const</span> 
  <a name="id-1_3_32_5_28_2_1_1_1_6_2-bb"></a><span class="keyword">operator</span><span class="special">(</span><span class="special">)</span><span class="special">(</span><span class="identifier">Expr</span> <span class="keyword">const</span> <span class="special">&amp;</span> expr<span class="special">)</span> <span class="keyword">const</span><span class="special">;</span></pre>
<p>
                  Returns a Fusion Forward Sequence representing a flattened view of <code class="computeroutput">expr</code>.
                </p>
</li>
</ol></div>
</div>
</div>
</div>
<div class="copyright-footer">Copyright © 2008 Eric Niebler<p>
        Distributed under the Boost Software License, Version 1.0. (See accompanying
        file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
      </p>
</div>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="second/resu_1_3_32_5_27_2_1_1_3_6.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../../proto/reference.html#header.boost.proto.fusion_hpp"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="flatten/resu_1_3_32_5_28_2_1_1_1_4.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
</body>
</html>
